package com.mindskip.xzs.domain.enums;
//用户状态的两种状态：启用和禁用
//展示用户状态：前端可以通过 `UserStatusEnum` 枚举值来展示用户状态的名称，比如在用户管理页面展示用户的状态。
//根据用户状态执行不同逻辑：前端可以根据用户状态的不同执行不同的逻辑，比如在前端界面上展示不同的按钮或操作根据用户状态。
//根据用户状态类型获取相应的状态名称：通过 `getName` 方法可以获取用户状态的名称，这在展示用户状态时可能会用到。
//提供用户状态类型的枚举值：后端可以使用 `UserStatusEnum` 枚举值来表示用户的状态，比如在用户实体类中定义状态属性使用枚举值。
//根据 code 获取对应的 UserStatusEnum 枚举值：后端可以通过 `fromCode` 方法根据传入的 code 获取对应的 `UserStatusEnum` 枚举值。
//状态名称规范化处理：通过 `getName` 方法可以获取状态名称，这有助于统一状态名称的处理和使用。
import java.util.HashMap;
import java.util.Map;

// 用户状态枚举类
public enum UserStatusEnum {

    // 启用状态，code为1，name为"启用"
    Enable(1, "启用"),

    // 禁用状态，code为2，name为"禁用"
    Disable(2, "禁用");

    int code; // 状态码
    String name; // 状态名称

    // 构造函数，传入 code 和 name 初始化枚举值
    UserStatusEnum(int code, String name) {
        this.code = code;
        this.name = name;
    }

    // 用于存储 code 和对应枚举值的 Map 对象
    private static final Map<Integer, UserStatusEnum> keyMap = new HashMap<>();

    // 静态代码块，将枚举值的 code 和枚举值本身存入 Map 中
    static {
        for (UserStatusEnum item : UserStatusEnum.values()) {
            keyMap.put(item.getCode(), item);
        }
    }

    // 根据 code 获取对应的 UserStatusEnum 枚举值
    public static UserStatusEnum fromCode(Integer code) {
        return keyMap.get(code);
    }

    // 获取枚举值的 code
    public int getCode() {
        return code;
    }

    // 设置枚举值的 code
    public void setCode(int code) {
        this.code = code;
    }

    // 获取枚举值的 name
    public String getName() {
        return name;
    }

    // 设置枚举值的 name
    public void setName(String name) {
        this.name = name;
    }

}
